// 导出一个对象，包含用于设置头部标题的工具函数
export default {
    /**
     * 根据路由名称设置页面头部标题
     * @param {Object} state - 应用程序的状态对象，用于存储和访问应用状态
     * @param {string} routerName - 当前路由名称，用于决定显示的头部标题
     */
    setHeaderTitle(state, routerName){
        // 根据不同的路由名称设置对应的头部标题
        switch(routerName){
            case 'day':
                state.headerTitle = '当天信息'
                break
            case 'month':
                state.headerTitle = '近期假期'
                break
            case 'year':
                state.headerTitle = '当年假期'
                break
            default:
                // 如果路由名称不匹配已知选项，则默认显示当天信息
                state.headerTitle = '当天信息'
                break
        }
    },
    /**
     * 设置输入框的placeholder
     * @param {Object} state - 应用程序的状态对象，用于存储和访问应用状态
     * @param {string} routerName - 当前路由名称，用于决定显示的头部标题
     */
    setPlaceholder(state, routerName) {
        // 拿到时间
        let date = new Date()
        let year = date.getFullYear()
        let month = (date.getMonth() + 1).toString().padStart(2, '0')
        let day = (date.getDate()).toString().padStart(2, '0')

        // 根据不同的路由名称设置对应的placeholder
        switch(routerName){
            case 'day':
                state.placeholder = `格式：${year}${month}${day}（${year}年${month}月${day}日）`
                state.maxlength = 8
                state.field = 'day'
                break
            case 'month':
                state.placeholder = `格式：${year}${month}（${year}年${month}月）`
                state.maxlength = 6
                state.field = 'month'
                break
            case 'year':
                state.placeholder = `格式：${year}（${year}年）`
                state.maxlength = 4
                state.field = 'year'
                break
            default:
                state.placeholder = `格式：${year}${month}${day}（${year}年${month}月${day}日）`
                state.maxlength = 8
                state.field = 'day'
                break
        }
    },

    /**
     * 设置错误码
     * @param {Object} state - 应用程序的状态对象，用于存储和访问应用状态
     * @param {number} code - 错误码
     */
    setErrorCode(state, code) {
        state.errorCode = code
    },

    /**
     * 设置三种数据的突变函数，用于更新状态对象中的数据。
     * @param {Object} state - 应用程序的状态对象，用于存储和访问应用状态
     * @param {string} data - 数据
     */
    setData(state, payload) {
        // 解构出 field 和 data 变量
        const { field, data } = payload;

        // 根据 field 的值，将数据存储到相应的状态属性中
        switch (field) {
            case 'day':
                state.dayData = data;
                break;
            case 'month':
                state.monthData = data;
                break;
            case 'year':
                state.yearData = data;
                break;
        }
    }
}